Source:Mkroom.h
Below is the full text to include/mkroom.h from NetHack 3.4.3. To link to a particular line, write [[mkroom.h#line123]], for example. 1. /* SCCS Id: @(#)mkroom.h 3.4 1992/11/14 */ 2. /* Copyright © Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* NetHack may be freely redistributed. See license for details. */ 4. 5. #ifndef MKROOM_H 6. #define MKROOM_H 7. 8. /* mkroom.h - types and structures for room and shop initialization */ 9. 10. struct mkroom { 11. schar lx,hx,ly,hy; /* usually xchar, but hx may be -1 */ 12. schar rtype; /* type of room (zoo, throne, etc...) */ 13. schar rlit; /* is the room lit ? */ 14. schar doorct; /* door count */ 15. schar fdoor; /* index for the first door of the room */ 16. schar nsubrooms; /* number of subrooms */ 17. boolean irregular; /* true if room is non-rectangular */ 18. struct mkroom *sbroomsMAX_SUBROOMS; /* Subrooms pointers */ 19. struct monst *resident; /* priest/shopkeeper/guard for this room */ 20. }; 21. 22. struct shclass { 23. const char *name; /* name of the shop type */ 24. char symb; /* this identifies the shop type */ 25. int prob; /* the shop type probability in % */ 26. schar shdist; /* object placement type */ 27. #define D_SCATTER 0 /* normal placement */ 28. #define D_SHOP 1 /* shop-like placement */ 29. #define D_TEMPLE 2 /* temple-like placement */ 30. struct itp { 31. int iprob; /* probability of an item type */ 32. int itype; /* item type: if >=0 a class, if < 0 a specific item */ 33. } iprobs5; 34. const char * const *shknms; /* list of shopkeeper names for this type */ 35. }; 36. 37. extern NEARDATA struct mkroom rooms(MAXNROFROOMS+1)*2; 38. extern NEARDATA struct mkroom* subrooms; 39. /* the normal rooms on the current level are described in rooms0..n for 40. * some n 41. * the vault, if any, is described by roomsn+1 42. * the next rooms entry has hx -1 as a flag 43. * there is at most one non-vault special room on a level 44. */ 45. 46. extern struct mkroom *dnstairs_room, *upstairs_room, *sstairs_room; 47. 48. extern NEARDATA coord doorsDOORMAX; 49. 50. /* values for rtype in the room definition structure */ 51. #define OROOM 0 /* ordinary room */ 52. #define COURT 2 /* contains a throne */ 53. #define SWAMP 3 /* contains pools */ 54. #define VAULT 4 /* contains piles of gold */ 55. #define BEEHIVE 5 /* contains killer bees and royal jelly */ 56. #define MORGUE 6 /* contains corpses, undead and ghosts */ 57. #define BARRACKS 7 /* contains soldiers and their gear */ 58. #define ZOO 8 /* floor covered with treasure and monsters */ 59. #define DELPHI 9 /* contains Oracle and peripherals */ 60. #define TEMPLE 10 /* contains a shrine */ 61. #define LEPREHALL 11 /* leprechaun hall (Tom Proudfoot) */ 62. #define COCKNEST 12 /* cockatrice nest (Tom Proudfoot) */ 63. #define ANTHOLE 13 /* ants (Tom Proudfoot) */ 64. #define SHOPBASE 14 /* everything above this is a shop */ 65. #define ARMORSHOP 15 /* specific shop defines for level compiler */ 66. #define SCROLLSHOP 16 67. #define POTIONSHOP 17 68. #define WEAPONSHOP 18 69. #define FOODSHOP 19 70. #define RINGSHOP 20 71. #define WANDSHOP 21 72. #define TOOLSHOP 22 73. #define BOOKSHOP 23 74. #define UNIQUESHOP 24 /* shops here & above not randomly gen'd. */ 75. #define CANDLESHOP 24 76. #define MAXRTYPE 24 /* maximum valid room type */ 77. 78. /* Special type for search_special() */ 79. #define ANY_TYPE (-1) 80. #define ANY_SHOP (-2) 81. 82. #define NO_ROOM 0 /* indicates lack of room-occupancy */ 83. #define SHARED 1 /* indicates normal shared boundary */ 84. #define SHARED_PLUS 2 /* indicates shared boundary - extra adjacent- 85. * square searching required */ 86. 87. #define ROOMOFFSET 3 /* 88. * (levlxy.roomno - ROOMOFFSET) gives 89. * rooms[] index, for inside-squares and 90. * non-shared boundaries. 91. */ 92. 93. #define IS_ROOM_PTR(x) ((x) >= rooms && (x) < rooms + MAXNROFROOMS) 94. #define IS_ROOM_INDEX(x) ((x) >= 0 && (x) < MAXNROFROOMS) 95. #define IS_SUBROOM_PTR(x) ((x) >= subrooms && \ 96. (x) < subrooms + MAXNROFROOMS) 97. #define IS_SUBROOM_INDEX(x) ((x) > MAXNROFROOMS && (x) < (MAXNROFROOMS*2)) 98. #define ROOM_INDEX(x) ((x) - rooms) 99. #define SUBROOM_INDEX(x) ((x) - subrooms) 100. #define IS_LAST_ROOM_PTR(x) (ROOM_INDEX(x) nroom) 101. #define IS_LAST_SUBROOM_PTR(x) (!nsubroom || SUBROOM_INDEX(x) nsubroom) 102. 103. #endif /* MKROOM_H */ Category:source code